package ar.com.wholeconsulting.pacc.model;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**
 * @version 1.0
 * @created 06-Dic-2011 21:12:37
 */
@Entity
@Table(name = "USUARIOS"/*
						 * ,uniqueConstraints=@UniqueConstraint(columnNames="NOMBRE"
						 * )
						 */)
// SELECT OBJECT(emp) FROM Employee emp WHERE emp.firstName = :firstname
@NamedQueries({ @NamedQuery(name = "Usuario.findByNombre", query = "from Usuario a WHERE a.nombre = ?0"), 
@NamedQuery(name = "Usuario.findAll", query = "FROM Usuario a") })
public class Usuario implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = -3165480465807948399L;
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name = "USUARIO_ID")
	private Long id;
	@OneToMany(mappedBy = "usuario", cascade = CascadeType.ALL)
	private List<Aparato> aparatos;
	@Column(name = "nombre", unique = true, nullable = false)
	private String nombre;
	private String planta;
	private String rubro;
	private String expediente;
	private String cuit;
	@Embedded
	private Direccion direccion;
	// calle nro localidad codigo postal oficina partido
	private String telefono;
	private String email;

	public Usuario() {
		this.aparatos = new ArrayList<Aparato>();
	}

	public List<Aparato> getAparatos() {
		return this.aparatos;
	}

	public void setAparatos(List<Aparato> aparatos) {
		this.aparatos = aparatos;
	}

	public Long getId() {
		return this.id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getNombre() {
		return this.nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public void addAparato(Aparato aparato) {
		this.aparatos.add(aparato);
	}

	@Override
	public String toString() {
		return this.getNombre();
	}

	public String getCuit() {
		return this.cuit;
	}

	public void setCuit(String cuit) {
		this.cuit = cuit;
	}

	public String getEmail() {
		return this.email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getExpediente() {
		return this.expediente;
	}

	public void setExpediente(String expediente) {
		this.expediente = expediente;
	}

	public String getPlanta() {
		return this.planta;
	}

	public void setPlanta(String planta) {
		this.planta = planta;
	}

	public String getRubro() {
		return this.rubro;
	}

	public void setRubro(String rubro) {
		this.rubro = rubro;
	}

	public String getTelefono() {
		return this.telefono;
	}

	public void setTelefono(String telefono) {
		this.telefono = telefono;
	}

	public Direccion getDireccion() {
		return this.direccion;
	}

	public void setDireccion(Direccion direccion) {
		this.direccion = direccion;
	}

	static public String FIND_BY_NOMBRE = "Usuario.findByNombre";
	static public String FIND_ALL = "Usuario.findAll";

}
